package com.sunedai.tiger.dao.system;

import com.sunedai.tiger.dao.system.entity.Menu;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 菜单dao层
 * @author zhaolipeng
 */
@Repository
public interface MenuDao extends PagingAndSortingRepository<Menu, Long> {

  /**
   * 保存或更新菜单实体
   * @param menu -- 菜单实体
   * @return 新的菜单实体
   */
  @Override
  Menu save(Menu menu);

  /**
   * 通过id查找菜单，指定sql的目的是为了预防缓存
   * @param id -- 标识
   * @return 菜单实体
   */
  @Override
  @Query(value = "from Menu where id=?1")
  Optional<Menu> findById(Long id);

  /**
   * 通过父类标识查找所有子菜单
   * @param parentId -- 父菜单标识
   * @return 菜单集合
   */
  List<Menu> findByParentId(Long parentId);

  /**
   * 查找所有菜单
   * @return 菜单集合
   */
  @Override
  List<Menu> findAll();

  /**
   * 删除菜单
   * @param menu -- 需删除的菜单实体
   */
  @Override
  void delete(Menu menu);
}
